﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using ServicioWPF.Clases;
using System.Data;
using Microsoft.Windows.Controls;



namespace ServicioWPF
{
    /// <summary>
    /// Lógica de interacción para VentanaCatalogos.xaml
    /// </summary>
    public partial class VentanaCatalogos : Window
    {
        private static int EstatusToolBar = 0;
        private static int CveEntAsignatura;

        /// <summary>
        /// if(Inicial) EstatusToolBar=1, (Nuevo)=2, (Editar)=3, (Cancelar)=4, (Eliminar)=5, (Guardar)=6
        /// </summary>
        private enum ToolBarEstatus { Inicial, Nuevo, Editar, Cancelar, Eliminar, Guardar };

        public VentanaCatalogos()
        {
            InitializeComponent();
            cargaDatos();
            EstatusTool(false, ToolBarEstatus.Inicial);
        }

        private void btnCerrar_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void Window_MouseDown(object sender, MouseButtonEventArgs e)
        {
            // Permite que se pueda mover la ventana por el escritorio, esto es necesario ya que estas ventanas no tiene los bordes predeterminados del sistema operativo.
            if (e.LeftButton == System.Windows.Input.MouseButtonState.Pressed)
                this.DragMove();
        }

        private void cargaDatos()
        {
            dgvAsignaturas.DataContext = CatAsignaturas.buscaTodasAsignaturas();
        }

        private void EstatusTool(bool Modo, ToolBarEstatus estatus)
        {
            txtNombre.IsEnabled = Modo;
            txtDescripcion.IsEnabled = Modo;
            cmBxSemestre.IsEnabled = Modo;
            tbtnguardar.IsEnabled = Modo;
            if (estatus == ToolBarEstatus.Inicial)
            {
                cmBxSemestre.Visibility = Visibility.Hidden;
                txtSemestre.Visibility = Visibility.Visible;
                tbtnEditar.IsEnabled = false;
                dgvAsignaturas.IsEnabled = true;
                if (dgvAsignaturas.SelectedIndex == -1)
                    txtBlkEliminarCancelar.Text = "Cancelar";
                else
                    txtBlkEliminarCancelar.Text = "Eliminar";
            }
            if (estatus == ToolBarEstatus.Nuevo)
            {
                cmBxSemestre.Visibility = Visibility.Visible;
                txtSemestre.Visibility = Visibility.Hidden;
                txtBlkEliminarCancelar.Text = "Cancelar";
                tbtnEditar.IsEnabled = false;
                EstatusToolBar = 2;
            }
            if (estatus == ToolBarEstatus.Editar)
            {
                cmBxSemestre.Visibility = Visibility.Visible;
                txtSemestre.Visibility = Visibility.Hidden;
                txtBlkEliminarCancelar.Text = "Cancelar";
                dgvAsignaturas.IsEnabled = false;
                EstatusToolBar = 3;
            }

        }

        private void dgvAsignaturas_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            CatAsignaturas miAsignatura = new CatAsignaturas();
            DataRowView drv = dgvAsignaturas.CurrentCell.Item as DataRowView;
            CveEntAsignatura = Convert.ToInt32(drv.Row[0]);
            if (drv != null)
            {
                miAsignatura.ClaveEntidad = Convert.ToInt32(drv.Row[0]);
                miAsignatura.CargaDatos();

                txtNombre.Text = miAsignatura.Nombre;
                txtDescripcion.Text = miAsignatura.Descripcion;
                string Semestre = miAsignatura.Semestre.ToString();
                switch (Semestre)
                {
                    case "1": txtSemestre.Text = "Primer Semestre";
                        break;
                    case "2": txtSemestre.Text = "Segundo Semestre";
                        break;
                    case "3": txtSemestre.Text = "Tercer Semestre";
                        break;
                    case "4": txtSemestre.Text = "Cuarto Semestre";
                        break;
                    case "5": txtSemestre.Text = "Quinto Semestre";
                        break;
                    case "6": txtSemestre.Text = "Sexto Semestre";
                        break;
                }
                cmBxSemestre.Text = Semestre;

                if (dgvAsignaturas.SelectedCells.Count > 0)
                {
                    if (dgvAsignaturas.SelectedIndex != -1)
                    {
                        txtBlkEliminarCancelar.Text = "Eliminar";
                        tbtnEditar.IsEnabled = true;
                    }
                    else
                    {
                        txtBlkEliminarCancelar.Text = "Cancelar";
                        tbtnEditar.IsEnabled = false;
                    }
                }
            }
        }

        private void tbtnNuevo_Click(object sender, RoutedEventArgs e)
        {
            EstatusTool(true, ToolBarEstatus.Nuevo);
            dgvAsignaturas.IsEnabled = false;
            limpiaControles();

        }

        private void tbtnEditar_Click(object sender, RoutedEventArgs e)
        {
            if (dgvAsignaturas.SelectedIndex != -1)
                EstatusTool(true, ToolBarEstatus.Editar);
            else
                MessageBox.Show("Selecciona una Asignatura");
        }

        private void tbtnguardar_Click(object sender, RoutedEventArgs e)
        {
            //nuevo
            if (EstatusToolBar == 2)
            {
                if ((txtNombre.Text != string.Empty) && (cmBxSemestre.SelectedIndex > 0))
                {
                    CatAsignaturas miAsignatura = new CatAsignaturas();
                    miAsignatura.Nombre = txtNombre.Text;
                    miAsignatura.Descripcion = txtDescripcion.Text;
                    miAsignatura.Semestre = cmBxSemestre.SelectedIndex;
                    miAsignatura.insertaAsignatura();
                    limpiaControles();
                    EstatusTool(false, ToolBarEstatus.Inicial);
                }
                else
                {
                    VentanaErrores er = new VentanaErrores();
                    er.lblMensajeError.Content = "Debes proporcionar al menos el nombre y semestre de la Asignatura";
                    er.Topmost = true;
                    er.ShowDialog();
                }
                cargaDatos();
            }
            //editar
            else if (EstatusToolBar == 3)
            {
                if ((txtNombre.Text != string.Empty) && (cmBxSemestre.SelectedIndex > 0))
                {
                    CatAsignaturas miAsignatura = new CatAsignaturas();
                    miAsignatura.ClaveEntidad = CveEntAsignatura;
                    miAsignatura.Nombre = txtNombre.Text;
                    miAsignatura.Descripcion = txtDescripcion.Text;
                    miAsignatura.Semestre = cmBxSemestre.SelectedIndex;
                    miAsignatura.ActualizaAsignatura();

                    cargaDatos();
                    limpiaControles();
                    EstatusTool(false, ToolBarEstatus.Inicial);
                }
                else
                {
                    VentanaErrores er = new VentanaErrores();
                    er.lblMensajeError.Content = "Debes proporcionar al menos el nombre y semestre de la Asignatura";
                    er.Topmost = true;
                    er.ShowDialog();
                }
            }
        }

        private void tbtnEliminarCancelar_Click(object sender, RoutedEventArgs e)
        {
            if (txtBlkEliminarCancelar.Text == "Cancelar")
            {
                EstatusTool(false, ToolBarEstatus.Inicial);
                limpiaControles();
                if(dgvAsignaturas.SelectedIndex!=-1)
                    txtBlkEliminarCancelar.Text = "Eliminar";
            }
            else if (txtBlkEliminarCancelar.Text == "Eliminar")
            {
                VentanaShowDialog sd = new VentanaShowDialog();
                sd.lblMensaje.Content = "¿Deseas eliminar el registro?";
                sd.Topmost = true;
                sd.ShowDialog();
                if(VentanaShowDialog.UsuarioAcepta)
                {
                    CatAsignaturas miAsignatura = new CatAsignaturas();
                    miAsignatura.ClaveEntidad = CveEntAsignatura;
                    miAsignatura.EliminaAsignatura();
                    cargaDatos();
                    limpiaControles();
                    EstatusTool(false, ToolBarEstatus.Inicial);
                }
            }
        }

        private void limpiaControles()
        {
            txtNombre.Text = string.Empty;
            txtDescripcion.Text = string.Empty;
            txtSemestre.Text = string.Empty;
            cmBxSemestre.SelectedIndex = -1;
        }

        private void dgvAsignaturas_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {


        }
    }
}
